#ifndef MAIN_H
#define MAIN_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <stdbool.h>
#include <time.h>
#include "lvgl/lvgl.h"
#include "ui/ui.h"
#include "lv_drivers/display/fbdev.h"
#include "lv_drivers/indev/evdev.h"
#include <linux/limits.h>

// 指示灯状态
extern bool left_turn_signal_on;
extern bool right_turn_signal_on;
extern bool hazard_lights_on;

// 指示灯动画状态
extern bool is_left_signal_animating;
extern bool is_right_signal_animating;

extern pthread_mutex_t g_queue_mutex;

// UI初始化函数
void ui_init(void);

// 核心函数
void init_input_output(void);
uint32_t custom_tick_get(void);
void seechange(void);

// 定义线程控制结构体
typedef struct {
    pthread_t thread;
    pthread_mutex_t lock;
    bool running;
} IOThreadControl;

// 声明线程函数
void *fileio_thread_func(void *arg);
void init_fileio_thread(void);
void stop_fileio_thread(void);

void handle_signal(int sig);

void init_mutex(void);

#endif /* MAIN_H */